#ifndef __VIMOCK_THROW_EXCEPTION_BEHAVIOR__
#define __VIMOCK_THROW_EXCEPTION_BEHAVIOR__

#include <exception>
#include <memory>
#include "object.hpp"
#include "behavior.hpp"
#include "invocation_matcher.hpp"
#include "unexpected_invocation_exception.hpp"
#include "exception_thrower.hpp"

namespace vimock {
class throw_exception_behavior : public _behavior {
public:
	throw_exception_behavior(invocation_matcher inv_matcher,
			exception_thrower ex_to_throw);
	virtual ~throw_exception_behavior();
	virtual object replay(invocation inv);
private:
	invocation_matcher inv_matcher;
	exception_thrower ex_to_throw;
};
}

#endif //__VIMOCK_THROW_EXCEPTION_BEHAVIOR__ 
